From: Juergen Gross Date: Wed, 25 Jul 2018 14:50:40 +0000 (+0200) Subject: tools/helpers: don't hardcode domain type for dom0 and xenstore domain X-Git-Tag: archive/raspbian/4.14.0+80-gd101b417b7-1+rpi1^2~63^2~3540 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/success//%22http:/www.example.com/cgi/success/?a=commitdiff_plain;h=7757cce0ab399eabf1d93e610f6c2dc1a7b5e185;p=xen.git tools/helpers: don't hardcode domain type for dom0 and xenstore domain Today when setting up a minimal domain configuration file for dom0 and eventually xenstore-domain the domain type is harcoded as PV. Change that by asking the hypervisor for the correct type. Signed-off-by: Juergen Gross Acked-by: Wei Liu --- diff --git a/tools/helpers/init-dom-json.c b/tools/helpers/init-dom-json.c index 91b1fdf3db..704e7cb4f0 100644 --- a/tools/helpers/init-dom-json.c +++ b/tools/helpers/init-dom-json.c @@ -13,6 +13,7 @@ int gen_stub_json_config(uint32_t domid) xentoollog_logger_stdiostream *logger; libxl_ctx *ctx; libxl_domain_config dom_config; + libxl_dominfo dominfo; char *json = NULL; logger = xtl_createlogger_stdiostream(stderr, XTL_ERROR, 0); @@ -27,10 +28,17 @@ int gen_stub_json_config(uint32_t domid) libxl_domain_config_init(&dom_config); + libxl_dominfo_init(&dominfo); + if (libxl_domain_info(ctx, &dominfo, domid)) { + fprintf(stderr, "cannot get domain type\n"); + goto outdispose; + } + /* Generate stub JSON config. */ - dom_config.c_info.type = LIBXL_DOMAIN_TYPE_PV; + dom_config.c_info.type = (dominfo.domain_type == LIBXL_DOMAIN_TYPE_HVM) + ? LIBXL_DOMAIN_TYPE_PVH : LIBXL_DOMAIN_TYPE_PV; libxl_domain_build_info_init_type(&dom_config.b_info, - LIBXL_DOMAIN_TYPE_PV); + dom_config.c_info.type); json = libxl_domain_config_to_json(ctx, &dom_config); /* libxl-json format requires the string ends with '\0'. Code @@ -42,6 +50,8 @@ int gen_stub_json_config(uint32_t domid) if (rc) fprintf(stderr, "cannot store stub json config for domain %u\n", domid); +outdispose: + libxl_dominfo_dispose(&dominfo); libxl_domain_config_dispose(&dom_config); free(json); libxl_ctx_free(ctx);